{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Exam 1</th>\n",
       "      <th>Exam 2</th>\n",
       "      <th>Admitted</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34.623660</td>\n",
       "      <td>78.024693</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>30.286711</td>\n",
       "      <td>43.894998</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>35.847409</td>\n",
       "      <td>72.902198</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>60.182599</td>\n",
       "      <td>86.308552</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>79.032736</td>\n",
       "      <td>75.344376</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Exam 1     Exam 2  Admitted\n",
       "0  34.623660  78.024693         0\n",
       "1  30.286711  43.894998         0\n",
       "2  35.847409  72.902198         0\n",
       "3  60.182599  86.308552         1\n",
       "4  79.032736  75.344376         1"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "path = '../data_files/data/ex2data1.txt'\n",
    "data = pd.read_csv(path,header=None,names=['Exam 1','Exam 2','Admitted']) # 给data设置title\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Exam 1</th>\n",
       "      <th>Exam 2</th>\n",
       "      <th>Admitted</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>100.000000</td>\n",
       "      <td>100.000000</td>\n",
       "      <td>100.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>65.644274</td>\n",
       "      <td>66.221998</td>\n",
       "      <td>0.600000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>19.458222</td>\n",
       "      <td>18.582783</td>\n",
       "      <td>0.492366</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>30.058822</td>\n",
       "      <td>30.603263</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>50.919511</td>\n",
       "      <td>48.179205</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>67.032988</td>\n",
       "      <td>67.682381</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>80.212529</td>\n",
       "      <td>79.360605</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>99.827858</td>\n",
       "      <td>98.869436</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           Exam 1      Exam 2    Admitted\n",
       "count  100.000000  100.000000  100.000000\n",
       "mean    65.644274   66.221998    0.600000\n",
       "std     19.458222   18.582783    0.492366\n",
       "min     30.058822   30.603263    0.000000\n",
       "25%     50.919511   48.179205    0.000000\n",
       "50%     67.032988   67.682381    1.000000\n",
       "75%     80.212529   79.360605    1.000000\n",
       "max     99.827858   98.869436    1.000000"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "positive = data[data['Admitted'].isin([1])] # 1\n",
    "negative = data[data['Admitted'].isin([0])] # 0\n",
    "\n",
    "fig,ax = plt.subplots(figsize=(12,8))\n",
    "ax.scatter(x = positive['Exam 1'],y = positive['Exam 2'],s = 50,color = 'b',marker = 'o',label = 'Admitted')\n",
    "ax.scatter(x = negative['Exam 1'],y = negative['Exam 2'],s = 50,color = 'r',marker = 'x',label = 'Not Addmitted')\n",
    "plt.legend() # 显示label\n",
    "ax.set_xlabel('Exam 1 Score') # set x_label\n",
    "ax.set_ylabel('Exam 2 Score') # set y_label\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sigmoid(z):\n",
    "    return 1 / (1 + np.exp(-z))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x1 = np.arange(-10, 10, 0.1)\n",
    "plt.plot(x1, sigmoid(x1), c='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "def cost(theta, X, y):\n",
    "    first = (-y) * np.log(sigmoid(X @ theta.T))\n",
    "    second = (1-y) * np.log(1 - sigmoid(X @ theta.T))\n",
    "    return np.mean(first - second)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# add a ones column - this makes the matrix multiplication work out easier\n",
    "if 'Ones' not in data.columns:\n",
    "    data.insert(0,'Ones',1)\n",
    "    \n",
    "# set X (training data) and y (target variable)\n",
    "X = data.iloc[:, :-1] # Convert the frame to its Numpy-array representation.\n",
    "y = data.iloc[:,-1] # Return is NOT a Numpy-matrix, rather, a Numpy-array.\n",
    "\n",
    "theta = np.zeros(X.shape[1])\n",
    "\n",
    "X = np.array(X.values)\n",
    "y = np.array(y.values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((100, 3), (3,), (100,))"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.shape, theta.shape, y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6931471805599453"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cost(theta, X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "def gradient(theta, X, y):\n",
    "    return (X.T @ (sigmoid(X @ theta.T) - y))/len(X)\n",
    "# the gradient of the cost is a vector of the same length as θ where the jth element (for j = 0, 1, . . . , n)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ -0.1       , -12.00921659, -11.26284221])"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gradient(theta, X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([-25.16131878,   0.20623159,   0.20147149]), 36, 0)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import scipy.optimize as opt\n",
    "result = opt.fmin_tnc(func=cost, x0=theta, fprime=gradient, args=(X, y))\n",
    "result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "     fun: 0.20349770158947394\n",
       "     jac: array([9.04290379e-09, 9.02615302e-08, 4.84927098e-07])\n",
       " message: 'Local minimum reached (|pg| ~= 0)'\n",
       "    nfev: 36\n",
       "     nit: 17\n",
       "  status: 0\n",
       " success: True\n",
       "       x: array([-25.16131878,   0.20623159,   0.20147149])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "res = opt.minimize(fun=cost, x0=theta, args=(X, y), method='TNC', jac=gradient)\n",
    "res\n",
    "# help(opt.minimize) \n",
    "# res.x  # final_theta\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.20349770158947394"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cost(result[0], X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "def predict(theta, X):\n",
    "    probability = sigmoid(X@theta)\n",
    "    return [1 if x >= 0.5 else 0 for x in probability]  # return a list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.89"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "final_theta = result[0]\n",
    "predictions = predict(final_theta, X)\n",
    "correct = [1 if a==b else 0 for (a, b) in zip(predictions, y)]\n",
    "accuracy = sum(correct) / len(X)\n",
    "accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtEAAAHfCAYAAACWK4TqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xl81NW9//HXmSQQSAKEhDWQsCSEVbYkqKUXpLVV7LWA15suttBibdVaxKVgtUqtLS5tMdpia9F667Uttz+Be1uttl6lll41hEV2MiEEhLCDMAlLgDm/P76EhJA9mfnO8n4+Hnl8M2cyM5+ZTJJPzvdzPsdYaxERERERkebzuB2AiIiIiEi4URItIiIiItJCSqJFRERERFpISbSIiIiISAspiRYRERERaSEl0SIiIiIiLaQkWkRERESkhZREi4iIiIi0kJJoEREREZEWinU7gOZITU21AwYMcDsMEREREYlwa9asOWyt7dHU14VFEj1gwACKiorcDkNEREREIpwxZldzvk7lHCIiIiIiLaQkWkRERESkhZREi4iIiIi0UFjURIuIiIhEorNnz7Jnzx5Onz7tdihRJz4+nn79+hEXF9eq2yuJFhEREXHJnj17SEpKYsCAARhj3A4nalhrOXLkCHv27GHgwIGtug+Vc4iIiIi45PTp06SkpCiBDjJjDCkpKW06A6AkWkRERMRFSqDd0dbXXUm0iIiIiEgLKYkWERERiWILFiwgOzubq6++mmuuuYby8vIW38fkyZMvfr5u3TpefPHFJm/z0ksvXTbW3NuGAi0sFBEREQkBXu/dVFSsb9f7TEwcQ1bW001+3fe//31uueUWXn75ZZ599lkWLlzY6sccO3YsY8eObfLrXnrpJWbNmtWq24YCzUSLiIiICAAff/wxnTp1YvLkyTzwwANcd911ABw4cIDrrruOCRMmXEyw165dy7hx47jhhhs4cODAxftYuXIlCxYsuHi5qKiIq6++mrFjx7J48WKOHz/OxIkTWbduHRMnTuSJJ55o8LZr1qzh6quvJjc3l1deeQVwZr2feuop8vLyuPHGGwP4ajROM9EiIiIiIaA5M8aB8qMf/Yjnn3+e/v37s3jxYhYuXMh3vvOdiwnzwoUL+cIXvsCsWbO48sorue2223jooYd44YUXGDx4MAMGDGjw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\n",
      "text/plain": [
       "<Figure size 864x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x1 = np.linspace(30, 100, 100)\n",
    "x2 = -(final_theta[0] + x1*final_theta[1]) / final_theta[2]\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(12,8))\n",
    "ax.plot(x1, x2, 'y', label='Prediction')\n",
    "ax.scatter(positive['Exam 1'], positive['Exam 2'], s=50, c='b', marker='o', label='Admitted')\n",
    "ax.scatter(negative['Exam 1'], negative['Exam 2'], s=50, c='r', marker='x', label='Not Admitted')\n",
    "ax.legend()\n",
    "ax.set_xlabel('Exam 1 Score')\n",
    "ax.set_ylabel('Exam 2 Score')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7762906256930321"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 实现hθ\n",
    "def hfunc1(theta, X):\n",
    "    return sigmoid(np.dot(theta.T, X))\n",
    "hfunc1(result[0],[1,45,85])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义预测函数\n",
    "def predict(theta, X):\n",
    "    probability = sigmoid(X * theta.T)\n",
    "    return [1 if x >= 0.5 else 0 for x in probability]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy = 89%\n"
     ]
    }
   ],
   "source": [
    "theta_min = np.matrix(result[0])\n",
    "predictions = predict(theta_min, X)\n",
    "correct = [1 if ((a == 1 and b == 1) or (a == 0 and b == 0)) else 0 for (a, b) in zip(predictions, y)]\n",
    "accuracy = (sum(map(int, correct)) % len(correct))\n",
    "print ('accuracy = {0}%'.format(accuracy))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.85      0.87      0.86        39\n",
      "           1       0.92      0.90      0.91        61\n",
      "\n",
      "    accuracy                           0.89       100\n",
      "   macro avg       0.88      0.89      0.88       100\n",
      "weighted avg       0.89      0.89      0.89       100\n",
      "\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import classification_report\n",
    "print(classification_report(predictions, y))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "x1 = np.arange(130, step=0.1)\n",
    "x2 = -(final_theta[0] + x1*final_theta[1]) / final_theta[2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(8,5))\n",
    "ax.scatter(positive['Exam 1'], positive['Exam 2'], c='b', label='Admitted')\n",
    "ax.scatter(negative['Exam 1'], negative['Exam 2'], s=50, c='r', marker='x', label='Not Admitted')\n",
    "ax.plot(x1, x2)\n",
    "ax.set_xlim(0, 130)\n",
    "ax.set_ylim(0, 130)\n",
    "ax.set_xlabel('x1')\n",
    "ax.set_ylabel('x2')\n",
    "ax.set_title('Decision Boundary')\n",
    "plt.show()\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
